记录一下最近碰上的面试题
js篇
- 介绍一下Array的API/方法,具体到返回值和参数
join / slice / splice / sort / push一类 / reverse
经验总结:要讲出来能够拓展的API,拓展话题;要能够牢记不同API的返回值,例如reverse是否返回数组?pop返回值是什么? - Array的map与forEach的区别?可用代码实现辅助解释
区别在于map返回一个新的数组,而forEach则时在原数组的基础上进行修改(允许对原数组进行修改)。
forEach适合你不需要改变数据的时候,如打印、存入数据库,而map适合于你需要对数据进行修改等操作,还可以结合filter、reduce进行操作 - 介绍一下事件绑定
事件绑定是指将子元素上的事件绑定到父元素上,利用事件冒泡将子元素事件冒泡到父元素进行处理,当有多个子元素同时绑定时,可以利用e.target进行区分 -
如何检测对象中是否存在某个属性
- 使用in关键字,该方法会拿到原型链上的属性
- 使用对象的hasOwnProperty方法,该方法只能判定自有属性
- 用undefined判断
-
页面性能优化
- 减少Http请求数
- 异步加载js文件(动态创建script标签、async、defer),主意async和defer区别
- 浏览器缓存(强缓存、协商缓存)
- 使用CDN
-
DNS预解析
预解析相关标签 ``` <!--第一个标签是强制开启所有a标签的预解析(包含https)--> <meta http-equiv="x-dns-prefetch-control" content="on"> <!--开启DNS预解析--> <link rel="dns-prefetch" href="//somewhere.com"> ```
-
写出以下程序输出内容
var n = 1; var a = { n: 10, fn: function () { var n = 100; return n + this.n; } } var fn = a.fn; console.log(a.fn()); // 110 console.log(fn()); // 101 console.log(a.fn.call(this)); // 101 console.log(a.fn.call(a)); // 110
-
写出程序输出内容
var a = {n: 10, m: 20}; var b = a; var c = b; var d = {...b}; b.n = 30; c = {n: 40}; console.log(a.n); // 30 console.log(b); // {n: 30, m: 20} console.log(c); // {n: 40} console.log(d); // {n: 10, m: 20} console.log(a === b); // true console.log(a === d); // false console.log(b === c); // false console.log(a === c); // false
- 如何获取一个页面上的所有元素
- 图片懒加载/预加载,同时有10000张图片怎么办?
目前思路:利用onscroll+scrollTop
追问:onscroll在什么情况下触发?
- ES5和ES6的继承有什么区别
- Web动画的几种常见方式?
- POST提交数据的几种常见Content-Type
- 如何定义一个方法,通过调用把视频的一帧生成预览图?(可以考虑Canvas相关)
- 什么是重放攻击,列举几种常见的防御手段?
CSS篇
-
介绍一下position: sticky和fixed的区别
定位类型:相对定位(relative)、绝对定位(absolute、fixed)、粘性定位(sticky)
该属性还在实验阶段
position: sticky(此段引用MDN)粘性定位可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位。
- 介绍一下Flex布局
Flex布局即Flexible Box,弹性布局,目前主要应用场景在移动端,也有部分PC端场景应用,Flex能够很好解决布局的问题,有效解决了以往垂直居中难的问题,可以简便、完整、响应式的实现各种布局。
任何一个容器都可以设置为flex布局,设置了之后,子元素的float、clear和vertical-align属性将会失效。
- Reflow和Repaint
简单介绍Reflow和Repaint,哪个会触发哪个?(触发顺序),哪个能够避免,哪个时尽量减少而不可能避免,css哪些操作会触发Reflow/Repaint - CSS3动画/CSS动画与js动画区别?(性能区别?)/CSS性能优化/CSS动画性能优化/js动画介绍
后续还会继续进行面试题的积累~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。